var data = {
    collectlist: [],//收藏列表
    shopcartlist: [],//购物车列表
}

//创建reducer纯函数 ( 接收之前的state 和 action对象, 必须返回一个新的state )
//action 表示一个实际的动作 , 一般用{type:'',params:0}这种格式的对象表示
function reducer(state = data, action) {
    //对state进行深拷贝( 生成一个全新的state )
    var newState = JSON.parse(JSON.stringify(state))
    if (action.type == 'COLLECT') { //收藏动作,处理完返回新的state
        newState.collectlist.push(action.params);
        return newState;
    } else if (action.type == 'CANCEL_COLLECT') { //取消收藏动作,处理完返回新的state
        var index = newState.collectlist.findIndex((item) => {
            return item.id == action.params.id;
        })
        if (index != -1) {
            newState.collectlist.splice(index, 1);
        }
        return newState;
    } else if (action.type == 'ADD_SHOPCART') {//加入购物车动作，处理完返回新的state
        //判断当前商品 是否已经加入购物车
        var index = newState.shopcartlist.findIndex((item) => {
            return item.id == action.params.id;
        })
        if (index != -1) {
            newState.shopcartlist[index].count++;//购物车如果存在该商品，数量+1
        } else {
            var params = JSON.parse(JSON.stringify(action.params))
            params["count"] = 1
            newState.shopcartlist.push(params);
        }
        return newState;

    } else if (action.type == 'MINUS_SHOPCART') {
        var index = newState.shopcartlist.findIndex((item) => {
            return item.id == action.params.id;
        })
        if (index != -1) {
            if (newState.shopcartlist[index].count > 1) { //如果商品数量大于1, 就让商品数量减1
                newState.shopcartlist[index].count--;
            } else { //如果商品数量小于等于1, 将商品从购物车中删除
                newState.shopcartlist.splice(index, 1);
            }
            return newState;
        }
    } else {
        return state;
    }
}
export default reducer;
